import javax.swing.*;

import java.util.*;

class EntradaClientes extends Thread {

	private ArrayList<HiloEntrada> clienteEntrantesP;
	private JLabel fondo;
	private JTable jt_tabla_reportes;
	
	private JTextArea jt4_texto;
	
	private Histograma histo;
	private int clientes_salen_caja;
	private int clientes_salen_ta;

	private int clientes_entran_caja;
	private int clientes_entran_ta;
	
	private int ganador;
	private int perdedor;
	private int llamadas;
	private int contestadas;
	private int perdidas;
	//private JTextField jtf_velocidad_simulacion;
	private int clientes;
	
	
	private JComboBox combo;
	private JSlider slider;
	private JTable jt2_tabla_reportes;
	private JTable jt3_tabla_reportes;

	/** ******************************************************************************** */

	public EntradaClientes(JLabel l, Histograma h, JTable jt_tabla_reportes,
			 JSlider slider,JComboBox combo,JTable jt2_tabla_reportes,JTable jt3_tabla_reportes,JTextArea jt4_texto ) {
		fondo = l;
		histo = h;
		this.jt4_texto=jt4_texto;
		this.jt_tabla_reportes = jt_tabla_reportes;
		clienteEntrantesP = new ArrayList<HiloEntrada>();
		clientes_salen_caja = 1;
		clientes_salen_ta = 1;
		clientes_entran_caja = 1;
		clientes_entran_ta = 1;
		clientes=1;
		ganador=1;
		perdedor=1;
		llamadas=1;
		contestadas=1;
		perdidas=1;
		this.slider=slider;
		this.combo=combo;
		this.jt2_tabla_reportes = jt2_tabla_reportes;
		this.jt3_tabla_reportes=jt3_tabla_reportes;
	}

	public int getClientes_entran_caja() {
		return clientes_entran_caja;
	}

	public void setClientes_entran_caja(int clientes_entran_caja) {
		this.clientes_entran_caja = clientes_entran_caja;
	}

	public int getClientes_entran_ta() {
		return clientes_entran_ta;
	}

	public void setClientes_entran_ta(int clientes_entran_ta) {
		this.clientes_entran_ta = clientes_entran_ta;
	}

	public void incrementar_Cli_Salen_Caja() {
		clientes_salen_caja = clientes_salen_caja + 1;
	}

	public void incrementar_Cli_Salen_TA() {
		clientes_salen_ta = clientes_salen_ta + 1;
	}

	public void incrementar_Cli_Entran_Caja() {
		clientes_entran_caja = clientes_entran_caja + 1;
	}

	public void incrementar_Cli_Entran_TA() {
		clientes_entran_ta = clientes_entran_ta + 1;
	}	

	public int getClientes_salen_caja() {
		return clientes_salen_caja;
	}

	public void setClientes_salen_caja(int clientes_salen_caja) {
		this.clientes_salen_caja = clientes_salen_caja;
	}

	public int getClientes_salen_ta() {
		return clientes_salen_ta;
	}

	public void setClientes_salen_ta(int clientes_salen_ta) {
		this.clientes_salen_ta = clientes_salen_ta;
	}
	public int getEntrada_clientes()
	{
		return clientes;
	}
	public void setIncremento_clientes(){
		clientes=clientes+1;
	}
	public int getGanador(){
		return ganador;
	}
	public void setIncreGanador(){
		ganador=ganador+1;
	}
	public int getLLamadas(){
		return llamadas;
	}
	public void setIncreLLamadas(){
		llamadas=llamadas+1;
	}
	public int getContestadas(){
		return contestadas;
	}
	public void setIncreContestadas(){
		contestadas=contestadas+1;
	}
	public int getPerdidas(){
		return perdidas;
	}
	public void setIncrePerdidas(){
		perdidas=perdidas+1;
	}
	public int getPerdedor(){
		return perdedor;
	}
	public void setIncrePerdedor(){
		perdedor=perdedor+1;
	}
	public void llenarClientes(int horaI, int horaF) {
		int cant = histo.cantClientesEntrantes(horaI, horaF);
		for (int i = 0; i < cant; i++)
			clienteEntrantesP.add(new HiloEntrada(fondo, histo, this,
					jt_tabla_reportes, slider,combo,jt2_tabla_reportes, jt3_tabla_reportes, jt4_texto));

		this.start();
	}

	public void run() {
		for (int e = 0; e < clienteEntrantesP.size(); e++) {

			long dormir = (long) ((Math.random() * 7000) + 1000);

			clienteEntrantesP.get(e).start();

			jt_tabla_reportes.setValueAt(e + 1, 2, 1);

			try {
				Thread.sleep(dormir);//tiempo que duerme el hilo menos de 7 segundos
			} catch (Exception d) {
			}
			
		}
		int r=1;
		try{
		sleep(Transformada.expo(3));//telefono
		}catch (InterruptedException er){}
		jt_tabla_reportes.setValueAt(r,21,1);
		double m=(Math.random()*2);
		if(m==1){
			jt_tabla_reportes.setValueAt(r,22,1);

		}
		if(m==0){
			jt_tabla_reportes.setValueAt(r,23,1);

		}
		r++;
	}

	@SuppressWarnings("deprecation")
	public void suspender() {
		this.suspend();
	}

	

	
}